constant kAppSymbol:='|Areas:MONDO|;
constant kPackageName:="Areas:MONDO";
constant kShortAppName:="Areas";
constant kVersion:="1.00";
constant kTableFont:=simpleFont12;
constant kInputFont:=simpleFont12;
constant kNoOverviewMsg:="This program doesn't have an overview.";
constant kFindButtonText:="Scroll to area code";
constant kFindButtonWidth:=100;
constant kThreeDigitsMaxMsg:="The area code you enter must be no longer than 3 digits.";
constant kNotAllNumbersMsg:="The area code you enter must be all numbers.";
constant kNoClueMsg:="I can't find that area code.";
constant kNoCigarMsg:="I couldn't find that area code, but I have gotten as close as I could.";

defConst('kAboutText,"Copyright  1995 Matthew Dixon Cowles and his licensors."
  &&"May be distributed under the terms of the GNU General Public License"
  &&"version 2.\n\n"
  &"Tap a number in the picker below the table to scroll to area codes"
  &&"beginning with that number or write an area code (or part of one)"
  &&"in the field in the lower center and tap the button next to it"
  &&"to scroll there. Time zones are abbreviated Atl for Atlantic,"
  &&"E for Eastern, C for Central, M for Mountain, P for Pacific,"
  &&"Alas for Alaska, and Haw for Hawaii.\n\n"
  &"Contact me at MattC@eWorld.com with suggestions, bug reports,"
  &&"expressions of praise, and lucrative job offers.\n\n"
  &"Thanks to Bob Wander for the suggestion.\n\n"
  &"Another little hack from Mondo Info.");

constant kEnterSomeTextMsg:="Enter 1-3 digits in the field and then tap this button to scroll the table.";

defConst('kIsAllNumbers,func(str)
  begin
  local count;
  for count:=0 to strLen(str)-1 do
    if str[count]<$0 or str[count]>$9 then
      return NIL;
  return TRUE;
  end);

defConst('kMyNotify,func(msg)
  begin
  getRoot():notify(kNotifyQAlert,ensureInternal(kShortAppName),ensureInternal(msg));
  end);

// The area codes must be in numerical order.
defConst('kAreas,
  [
  {area:"201",statesym:'NJ},
  {area:"202",statesym:'DC},
  {area:"203",statesym:'CT},
  {area:"204",statesym:'MB},
  {area:"205",statesym:'AL},
  {area:"206",statesym:'WA},
  {area:"207",statesym:'ME},
  {area:"208",statesym:'ID},
  {area:"209",statesym:'CA},
  {area:"210",statesym:'TX},
  {area:"212",statesym:'NY},
  {area:"213",statesym:'CA},
  {area:"214",statesym:'TX},
  {area:"215",statesym:'PA},
  {area:"216",statesym:'OH},
  {area:"217",statesym:'IL},
  {area:"218",statesym:'MN},
  {area:"219",statesym:'|IN|},
  {area:"281",statesym:'TX},
  {area:"301",statesym:'MD},
  {area:"302",statesym:'DE},
  {area:"303",statesym:'CO},
  {area:"304",statesym:'WV},
  {area:"305",statesym:'FL},
  {area:"306",statesym:'SK},
  {area:"307",statesym:'WY},
  {area:"308",statesym:'NE},
  {area:"309",statesym:'IL},
  {area:"310",statesym:'CA},
  {area:"312",statesym:'IL},
  {area:"313",statesym:'MI},
  {area:"314",statesym:'MO},
  {area:"315",statesym:'NY},
  {area:"316",statesym:'KS},
  {area:"317",statesym:'|IN|},
  {area:"318",statesym:'LA},
  {area:"319",statesym:'IA},
  {area:"334",statesym:'AL},
  {area:"360",statesym:'WA},
  {area:"401",statesym:'RI},
  {area:"402",statesym:'NE},
  {area:"403",statesym:'AB},
  {area:"404",statesym:'GA},
  {area:"405",statesym:'OK},
  {area:"406",statesym:'MT},
  {area:"407",statesym:'FL},
  {area:"408",statesym:'CA},
  {area:"409",statesym:'TX},
  {area:"410",statesym:'MD},
  {area:"412",statesym:'PA},
  {area:"413",statesym:'MA},
  {area:"414",statesym:'WI},
  {area:"415",statesym:'CA},
  {area:"416",statesym:'ON},
  {area:"417",statesym:'MO},
  {area:"418",statesym:'PQ},
  {area:"419",statesym:'OH},
  {area:"501",statesym:'AR},
  {area:"502",statesym:'KY},
  {area:"503",statesym:'|OR|},
  {area:"504",statesym:'LA},
  {area:"505",statesym:'NM},
  {area:"506",statesym:'NB},
  {area:"507",statesym:'MN},
  {area:"508",statesym:'MA},
  {area:"509",statesym:'WA},
  {area:"510",statesym:'CA},
  {area:"512",statesym:'TX},
  {area:"513",statesym:'OH},
  {area:"514",statesym:'PQ},
  {area:"515",statesym:'IA},
  {area:"516",statesym:'NY},
  {area:"517",statesym:'MI},
  {area:"518",statesym:'NY},
  {area:"519",statesym:'ON},
  {area:"520",statesym:'AZ},
  {area:"540",statesym:'VA},
  {area:"601",statesym:'MS},
  {area:"602",statesym:'AZ},
  {area:"603",statesym:'NH},
  {area:"604",statesym:'BC},
  {area:"605",statesym:'SD},
  {area:"606",statesym:'KY},
  {area:"607",statesym:'NY},
  {area:"608",statesym:'WI},
  {area:"609",statesym:'NJ},
  {area:"610",statesym:'PA},
  {area:"612",statesym:'MN},
  {area:"613",statesym:'ON},
  {area:"614",statesym:'OH},
  {area:"615",statesym:'TN},
  {area:"616",statesym:'MI},
  {area:"617",statesym:'MA},
  {area:"618",statesym:'IL},
  {area:"619",statesym:'IL},
  {area:"701",statesym:'ND},
  {area:"702",statesym:'NV},
  {area:"703",statesym:'VA},
  {area:"704",statesym:'NC},
  {area:"705",statesym:'ON},
  {area:"706",statesym:'GA},
  {area:"707",statesym:'CA},
  {area:"708",statesym:'IL},
  {area:"709",statesym:'NF},
  {area:"712",statesym:'IA},
  {area:"713",statesym:'TX},
  {area:"714",statesym:'CA},
  {area:"715",statesym:'WI},
  {area:"716",statesym:'NY},
  {area:"717",statesym:'PA},
  {area:"718",statesym:'NY},
  {area:"719",statesym:'CO},
  {area:"801",statesym:'UT},
  {area:"802",statesym:'VT},
  {area:"803",statesym:'SC},
  {area:"804",statesym:'VA},
  {area:"805",statesym:'CA},
  {area:"806",statesym:'TX},
  {area:"807",statesym:'ON},
  {area:"808",statesym:'HI},
  {area:"809",statesym:'PR},
  {area:"810",statesym:'MI},
  {area:"812",statesym:'|IN|},
  {area:"813",statesym:'FL},
  {area:"814",statesym:'PA},
  {area:"815",statesym:'IL},
  {area:"816",statesym:'MO},
  {area:"817",statesym:'TX},
  {area:"818",statesym:'CA},
  {area:"819",statesym:'PQ},
  {area:"901",statesym:'TN},
  {area:"902",statesym:'NS},
  {area:"903",statesym:'TX},
  {area:"904",statesym:'FL},
  {area:"905",statesym:'ON},
  {area:"906",statesym:'MI},
  {area:"907",statesym:'AK},
  {area:"908",statesym:'NJ},
  {area:"909",statesym:'CA},
  {area:"910",statesym:'NC},
  {area:"912",statesym:'GA},
  {area:"913",statesym:'KS},
  {area:"914",statesym:'NY},
  {area:"915",statesym:'TX},
  {area:"916",statesym:'CA},
  {area:"917",statesym:'NY},
  {area:"918",statesym:'OK},
  {area:"919",statesym:'NC},
  {area:"941",statesym:'FL},
  {area:"970",statesym:'CO},
  ]);

defConst('kStates,
  {
  AB:{name:"Alberta",tz:"M"},
  AK:{name:"Alaska",tz:"Alas"},
  AL:{name:"Alabama",tz:"C"},
  AR:{name:"Arkansas",tz:"C"},
  AZ:{name:"Arizona",tz:"M"},
  BC:{name:"British Columbia",tz:"P"},
  CA:{name:"California",tz:"P"},
  CO:{name:"Colorado",tz:"M"},
  CT:{name:"Connecticut",tz:"E"},
  DE:{name:"Delaware",tz:"E"},
  DC:{name:"Washington, DC",tz:"E"},
  FL:{name:"Florida",tz:"E, C"},
  GA:{name:"Georgia",tz:"E"},
  HI:{name:"Hawaii",tz:"Haw"},
  IA:{name:"Iowa",tz:"C"},
  ID:{name:"Idaho",tz:"M, P"},
  IL:{name:"Illinois",tz:"C"},
  |IN|:{name:"Indiana",tz:"E, C"},
  KS:{name:"Kansas",tz:"C, M"},
  KY:{name:"Kentucky",tz:"C, E"},
  LA:{name:"Louisiana",tz:"C"},
  MA:{name:"Massachusetts",tz:"E"},
  MB:{name:"Manitoba",tz:"C"},
  MD:{name:"Maryland",tz:"E"},
  ME:{name:"Maine",tz:"E"},
  MI:{name:"Michigan",tz:"E"},
  MN:{name:"Minnesota",tz:"C"},
  MO:{name:"Missouri",tz:"C"},
  MS:{name:"Mississippi",tz:"C"},
  MT:{name:"Montana",tz:"M"},
  NB:{name:"New Brunswick",tz:"Atl"},
  ND:{name:"North Dakota",tz:"C, M"},
  NE:{name:"Nebraska",tz:"C, M"},
  NF:{name:"Newfoundland",tz:"Atl"},
  NS:{name:"Nova Scotia",tz:"Atl"},
  NV:{name:"Nevada",tz:"P"},
  NH:{name:"New Hampshire",tz:"E"},
  NJ:{name:"New Jersey",tz:"E"},
  NY:{name:"New York",tz:"E"},
  NM:{name:"New Mexico",tz:"M"},
  NC:{name:"North Carolina",tz:"E"},
  OH:{name:"Ohio",tz:"E"},
  OK:{name:"Oklahoma",tz:"C"},
  ON:{name:"Ontario",tz:"E"},
  |OR|:{name:"Oregon",tz:"P"},
  PA:{name:"Pennsylvania",tz:"E"},
  PE:{name:"Prince Edward Island",tz:"Atl"},
  PQ:{name:"Quebec",tz:"E"},
  PR:{name:"Puerto Rico",tz:"Atl"},
  RI:{name:"Rhode Island",tz:"E"},
  SD:{name:"South Dakota",tz:"C, M"},
  SC:{name:"South Carolina",tz:"E"},
  SK:{name:"Saskatchawan",tz:"C"},
  TN:{name:"Tennessee",tz:"C, E"},
  TX:{name:"Texas",tz:"C"},
  UT:{name:"Utah",tz:"M"},
  VA:{name:"Virginia",tz:"C"},
  VT:{name:"Vermont",tz:"E"},
  WA:{name:"Washington",tz:"P"},
  WI:{name:"Wisconsin",tz:"C"},
  WV:{name:"West Virginia",tz:"E"},
  WY:{name:"Wyoming",tz:"M"},
  });

// Cool, we can compute the indexes for the picker at compile time.
defConst('kBeginningIndexes,apply(func(areaArray)
  begin
  local beginningIndexes:=[];
  local beginNumber,count,found;
  for beginNumber:=0 to 9 do
    begin
    count:=0;
    found:=NIL;
    while count<length(areaArray) and not found do
      begin
      if areaArray[count].area[0]>=chr(beginNumber+48) then
        begin
        addArraySlot(beginningIndexes,count);
        found:=TRUE;
        end;
      count:=count+1;
      end;
    if not found then
      addArraySlot(beginningIndexes,length(areaArray)-1);
    end;
  return beginningIndexes;
  end,[kAreas]));
